task DisPlayPlayer
{
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgPlayer);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);
		
		ObjEffect_SetVertexUV(obj, 0,  1,  0);
		ObjEffect_SetVertexUV(obj, 1,  41, 0);
		ObjEffect_SetVertexUV(obj, 2, 41, 40);
		ObjEffect_SetVertexUV(obj, 3, 1, 40);

		ObjEffect_SetVertexXY(obj, 0, -12, -16);
		ObjEffect_SetVertexXY(obj, 1,12,  -16);
		ObjEffect_SetVertexXY(obj, 2,12, 16);
		ObjEffect_SetVertexXY(obj, 3,  -12,  16);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  24, 0);
		ObjEffect_SetVertexUV(obj, 2, 24, 32);
		ObjEffect_SetVertexUV(obj, 3, 0, 32);

		ObjEffect_SetVertexColor(obj,0,255,255,200,200);
		ObjEffect_SetVertexColor(obj,1,255,255,200,200);
		ObjEffect_SetVertexColor(obj,2,255,255,200,200);
		ObjEffect_SetVertexColor(obj,3,255,255,200,200);

		ObjEffect_SetLayer(obj,3);
		Obj_SetPosition(obj,96,163);

		ObjEffect_SetScale(obj, scx,scy);

		let AdjustY=1;
		let AdjustX=1;
		let AdjustX2=0;
		let count=0;
		loop
		{
			Obj_SetPosition(obj,SX+PlayerPosition[0]*30,SY+PlayerPosition[1]*30);
			alternative(PlayerDirection)
			case(0)
			{
				AdjustY=2;
			}
			case(90)
			{
				AdjustY=3;
			}
			case(180)
			{
				AdjustY=4;
			}
			case(270)
			{
				AdjustY=1;
			}
			if(count<=10)
			{
				AdjustX=1+AdjustX2;
			}
			else if(count<=20)
			{
				AdjustX=2+AdjustX2;
			}
			else if(count<=30)
			{
				AdjustX=3+AdjustX2;
			}
			else if(count<=40)
			{
				AdjustX=2+AdjustX2;
			}
			count+=1;
			if(count>=40){count=0;}
			ObjEffect_SetVertexUV(obj, 0,  24*(AdjustX-1),  32*(AdjustY-1));
			ObjEffect_SetVertexUV(obj, 1,  24*AdjustX, 32*(AdjustY-1));
			ObjEffect_SetVertexUV(obj, 2, 24*AdjustX, 32*AdjustY);
			ObjEffect_SetVertexUV(obj, 3, 24*(AdjustX-1), 32*AdjustY);
			yield;
		}
}

task DisPlayMagicStone
{
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);
		
		ObjEffect_SetVertexUV(obj, 0,  224,  338);
		ObjEffect_SetVertexUV(obj, 1,  256, 338);
		ObjEffect_SetVertexUV(obj, 2,256, 370);
		ObjEffect_SetVertexUV(obj, 3, 224, 370);


		ascent(i in 0..4)
		{
		ObjEffect_SetVertexColor(obj,i,255,100,255,100);
		}

		ObjEffect_SetLayer(obj,3);
		Obj_SetPosition(obj,96,163);

		ObjEffect_SetScale(obj, scx,scy);
		while(!Obj_BeDeleted(obj))
		{
			Obj_SetPosition(obj,SX+MagicStonePosition[0]*30,SY+MagicStonePosition[1]*30);
			if(MagicStoneBreak)
			{
				Obj_Delete(obj);
			}
			yield;
		}
		ascent(i in 0..8)
		{
		ExplodeEffect(SX+MagicStonePosition[0]*30,SY+MagicStonePosition[1]*30,i*45);
		}
		wait(15);
		SetCommonData("StagePlaying",false);
		SetCommonData("StageFailed",true);
		
		task ExplodeEffect(x,y,angle)
		{
		let obj2 = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj2, imgShot);
		ObjEffect_SetPrimitiveType(obj2, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj2, ADD); 
		ObjEffect_CreateVertex(obj2, 4);
		ObjEffect_SetVertexXY(obj2, 0, -10, -10);
		ObjEffect_SetVertexXY(obj2, 1,10,  -10);
		ObjEffect_SetVertexXY(obj2, 2,10, 10);
		ObjEffect_SetVertexXY(obj2, 3,  -10,  10);

		ObjEffect_SetVertexUV(obj2, 0,  80+20,  318);
		ObjEffect_SetVertexUV(obj2, 1,  99+20, 318);
		ObjEffect_SetVertexUV(obj2, 2,99+20, 338);
		ObjEffect_SetVertexUV(obj2, 3, 80+20, 338);

		ascent(i in 0..4)
		{
		ObjEffect_SetVertexColor(obj2,i,255,100,255,100);
		}

		ObjEffect_SetLayer(obj2,3);
		Obj_SetPosition(obj2,x,y);
		ObjEffect_SetScale(obj2, scx,scy);
		Obj_SetAngle(obj2,angle);
		Obj_SetSpeed(obj2,5);
		wait(5);
		Obj_Delete(obj2);
		}

}

task DisPlayPedestal
{
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgShot);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);
		
		ObjEffect_SetVertexUV(obj, 0,  224,  338);
		ObjEffect_SetVertexUV(obj, 1,  256, 338);
		ObjEffect_SetVertexUV(obj, 2,256, 370);
		ObjEffect_SetVertexUV(obj, 3, 224, 370);


		ascent(i in 0..4)
		{
	//	ObjEffect_SetVertexColor(obj,i,255,100,255,100);
		}

		ObjEffect_SetLayer(obj,2);
		Obj_SetPosition(obj,96,163);

		ObjEffect_SetScale(obj, scx,scy);
		loop
		{
			Obj_SetPosition(obj,SX+PedestalPosition[0]*30,SY+PedestalPosition[1]*30);
			yield;
		}
}

task DisPlayGoal
{
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let scx=1;
		let scy=1;
		let obj = Obj_Create(OBJ_EFFECT);
		ObjEffect_SetTexture(obj, imgGoal);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  20, 0);
		ObjEffect_SetVertexUV(obj, 2,20, 16);
		ObjEffect_SetVertexUV(obj, 3, 0, 16);


		ObjEffect_SetLayer(obj,2);
		Obj_SetPosition(obj,96,163);

		let flag=0;
		let count=0;
		ObjEffect_SetScale(obj, scx,scy);
		loop
		{
			Obj_SetPosition(obj,SX+GoalPosition[0]*30,SY+GoalPosition[1]*30);
			if(round(PedestalPosition[0])==round(MagicStonePosition[0]) && round(PedestalPosition[1])==round(MagicStonePosition[1]))
			{
				flag=1;
			}
			else
			{
				flag=0;
			}
			if(flag==1)
			{
				if(count<30)
				{
				count+=1;
				}
			}
			else
			{
				if(count>0)
				{
				count-=1;
				}
			}
			ObjEffect_SetVertexUV(obj, 0,  0,  48-16*floor(count/10));
			ObjEffect_SetVertexUV(obj, 1,  20, 48-16*floor(count/10));
			ObjEffect_SetVertexUV(obj, 2,20, 64-16*floor(count/10));
			ObjEffect_SetVertexUV(obj, 3, 0, 64-16*floor(count/10));
			yield;
		}
}

task GraundDraw
{
ascent(i in 0..13*14)
{
DisPlayGraund(i);
}

}

task DisPlayGraund(num)
{
		let SX=GetCenterX-180;
		let SY=GetCenterY-195;
		let NumX=num%13;
		let NumY=floor(num/13);
		let scx=1;
		let scy=1;
		let obj = Obj_Create(OBJ_EFFECT);
		alternative(Graund[num])
		case(0)
		{
			ObjEffect_SetTexture(obj, imgPlain);
		}
		case(1)
		{
			ObjEffect_SetTexture(obj, imgWater);
		}
		case(2)
		{
			ObjEffect_SetTexture(obj, imgWood);
		}
		case(3)
		{
			ObjEffect_SetTexture(obj, imgMagma);
		}
		case(4)
		{
			ObjEffect_SetTexture(obj, imgAllow1);
		}
		case(5)
		{
			ObjEffect_SetTexture(obj, imgAllow2);
		}
		case(6)
		{
			ObjEffect_SetTexture(obj, imgAllow3);
		}
		case(7)
		{
			ObjEffect_SetTexture(obj, imgAllow4);
		}
		case(8)
		{
			ObjEffect_SetTexture(obj, imgFloor);
		}
		case(9)
		{
			ObjEffect_SetTexture(obj, imgFloor);
		}
		case(-1)
		{
			ObjEffect_SetTexture(obj, imgCircle);
		}
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	//	ObjEffect_SetRenderState(obj, ADD); 
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -15, -15);
		ObjEffect_SetVertexXY(obj, 1,15,  -15);
		ObjEffect_SetVertexXY(obj, 2,15, 15);
		ObjEffect_SetVertexXY(obj, 3,  -15,  15);
		
		ObjEffect_SetVertexUV(obj, 0,  0,  0);
		ObjEffect_SetVertexUV(obj, 1,  30, 0);
		ObjEffect_SetVertexUV(obj, 2, 30, 30);
		ObjEffect_SetVertexUV(obj, 3, 0, 30);

		ObjEffect_SetVertexColor(obj,0,255,255,200,200);
		ObjEffect_SetVertexColor(obj,1,255,255,200,200);
		ObjEffect_SetVertexColor(obj,2,255,255,200,200);
		ObjEffect_SetVertexColor(obj,3,255,255,200,200);

		ObjEffect_SetLayer(obj,1);
		Obj_SetPosition(obj,96,163);

		let count=0;
		let rectX=0;
		let rectY=0;
		ObjEffect_SetScale(obj, scx,scy);

		alternative(Graund[num])
		case(-1)
		{
			ObjEffect_SetVertexUV(obj, 0,  0,  0);
			ObjEffect_SetVertexUV(obj, 1,  256, 0);
			ObjEffect_SetVertexUV(obj, 2, 256, 256);
			ObjEffect_SetVertexUV(obj, 3, 0, 256);
			ObjEffect_SetScale(obj, scx*0.9,scy*0.9);
		}

		loop
		{
			Obj_SetPosition(obj,SX+NumX*30,SY+NumY*30);

		alternative(Graund[num])
		case(0)
		{
			ObjEffect_SetTexture(obj, imgPlain);
		}
		case(1)
		{
			ObjEffect_SetTexture(obj, imgWater);
			ObjEffect_SetVertexUV(obj, 0,  0,  0+rectY);
			ObjEffect_SetVertexUV(obj, 1,  30, 0+rectY);
			ObjEffect_SetVertexUV(obj, 2, 30, 30+rectY);
			ObjEffect_SetVertexUV(obj, 3, 0, 30+rectY);
				rectY-=0.5;
		}
		case(2)
		{
			ObjEffect_SetTexture(obj, imgWood);
		}
		case(3)
		{
			ObjEffect_SetVertexUV(obj, 0,  rectX,  rectY*16);
			ObjEffect_SetVertexUV(obj, 1,  16+rectX, rectY*16);
			ObjEffect_SetVertexUV(obj, 2, 16+rectX, 16+rectY*16);
			ObjEffect_SetVertexUV(obj, 3, 0+rectX, 16+rectY*16);
			ObjEffect_SetTexture(obj, imgMagma);
			if(count>=10)
			{
				rectY+=1;
				if(rectY>=4){rectY=0;}
				count=0;
			}
		}
		case(4)
		{
			ObjEffect_SetTexture(obj, imgAllow1);
		}
		case(5)
		{
			ObjEffect_SetTexture(obj, imgAllow2);
		}
		case(6)
		{
			ObjEffect_SetTexture(obj, imgAllow3);
		}
		case(7)
		{
			ObjEffect_SetTexture(obj, imgAllow4);
		}
		case(8)
		{
			ObjEffect_SetTexture(obj, imgFloor);
		}
		case(9)
		{
			ObjEffect_SetTexture(obj, imgFloor);
		}
		case(-1)
		{
			ObjEffect_SetTexture(obj, imgCircle);
		}
/*
			alternative(Graund[num])
			case(1)
			{
				ObjEffect_SetVertexUV(obj, 0,  0,  0+rectY);
				ObjEffect_SetVertexUV(obj, 1,  30, 0+rectY);
				ObjEffect_SetVertexUV(obj, 2, 30, 30+rectY);
				ObjEffect_SetVertexUV(obj, 3, 0, 30+rectY);
				rectY-=0.5;
			}
			case(3)
			{
				ObjEffect_SetVertexUV(obj, 0,  rectX,  rectY*16);
				ObjEffect_SetVertexUV(obj, 1,  16+rectX, rectY*16);
				ObjEffect_SetVertexUV(obj, 2, 16+rectX, 16+rectY*16);
				ObjEffect_SetVertexUV(obj, 3, 0+rectX, 16+rectY*16);
			if(count>=10)
			{
				rectY+=1;
				if(rectY>=4){rectY=0;}
				count=0;
			}
			}
*/
			count+=1;
			yield;
		}
}

function wait(w) 
{
    loop(w) { yield; }
}

#include_function ".\..\txt/objdata.txt"
#include_function ".\..\txt/movedata.txt"